#pragma once
#include "State.h"
//#include "StateMachine.h"
class State;
class TestShip;
#include "Ship.h"

class Bot
{
protected:
	State *CurrentState;
	D3DXVECTOR3 DesiredAngles;


	bool IsTurningOvertime; //Used for throttle setting

	UINT BehaviorID;

public:
	TestShip *BotShip;
	float MaxRotation;
	short MaxThrottle;
	Bot();
	Bot(IDirect3DDevice9 *nDevice, float nMass, State *nState, D3DXVECTOR3 BotSize, float nThrust);

	~Bot();

	void SetTarget(Entity *nTarget);
	bool ChangeState( State *nState );
	virtual void Update( float dt );
	virtual void Render( void );

	void SetEffect(ID3DXEffect *nEffect);
	void SetWVPMat(D3DXMATRIX nWVP);
	void SetEyePosition(const D3DXVECTOR3 &nVector);

	D3DXVECTOR3 GetAngles( void );

	D3DXVECTOR3 GetDesiredAngles( void );
	void SetDesiredAngles(D3DXVECTOR3 nDAngles);

	void SetMaxThrottle(short nMaxThrottle);

	bool GetIsTurningOvertime( void );

	void SetBehaviorID( UINT nID );
	UINT GetBehaviorID( void );

	
#ifdef _DEBUG
	void DebugOutput(ID3DXFont *DebugFont);
	D3DXVECTOR3 DebugVec;
#endif
};

class BigBot : public Bot
{
private:

public:
	BigBot();
	BigBot(IDirect3DDevice9 *nDevice, float nMass, State *nState);

};